/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.constant.gui.util;

import java.math.BigInteger;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 *
 * @author gsierra
 */
public class Formato {
    private static final Integer KB;
    private static final Integer MB;
    private static final Integer GB;
    private static final SimpleDateFormat FORMATO_FECHA;
    private static final NumberFormat FORMATO_NUMERO_KB;
    private static final NumberFormat FORMATO_NUMERO_MB;
    private static final NumberFormat FORMATO_NUMERO_GB;

    static{
        KB = 1024;
        MB = KB * KB;
        GB = KB * MB;
        FORMATO_FECHA = new SimpleDateFormat("dd/MM/yyyy k:mm:ss");
        FORMATO_NUMERO_KB = new DecimalFormat("#,##0.0# Kib");
        FORMATO_NUMERO_MB = new DecimalFormat("#,##0.0# Mib");
        FORMATO_NUMERO_GB = new DecimalFormat("#,##0.0# Gib");
    }

    /**
     * Método que aplica el formato a una fecha con la máscara <b>dd/MM/yyyy k:mm:ss</b>
     * @param fecha
     * @return Cadena de caracteres con la fecha formateada
     */
    public static String formateaFecha(Date fecha){
        return FORMATO_FECHA.format(fecha);
    }

    /**
     * Método aplica el formato a una fecha con al máscara <b>dd/MM/yyyy k:mm:ss</b>
     * @param fecha
     * @return Cadena de caracteres con la fecha formateada
     */
    public static String formateaFecha(Calendar fecha){
        return formateaFecha(fecha.getTime());
    }

    public static String formateaNúmero(Long numero){
        String numeroF = "";
        if(numero >= 0 && numero <= KB)
            numeroF = FORMATO_NUMERO_KB.format(numero / KB);
        else if(numero > KB && numero <= MB)
            numeroF = FORMATO_NUMERO_MB.format(numero / MB);
        else if(numero > MB)
            numeroF = FORMATO_NUMERO_GB.format(numero / GB);
        return numeroF;
    }

    public  static void main (String... arg){

        System.out.println(System.getProperty("user.dir"));
        System.out.println(Formato.class.getCanonicalName());
    }
}
